package models

import (
	"fmt"
	"git.oschina.net/YPTArch/processcache/sys/redis"
	"git.oschina.net/YPTArch/processcache/sys/logs"
)

//远程生成Token 返回
type TokenRequest struct {
	// token
	Access           string
	// token创建时间
	AccessCreateAt   int64
	// token过期时间
	AccessExpiresIn  int
	// 用户信息
	User User

}


//远程生成Token 返回
type RedisToken struct {
	// token
	Access           string
	// token创建时间
	AccessCreateAt   int64
	// token过期时间
	AccessExpiresIn  int
	// 用户信息
	UserId    string //用户id
	UserName  string //用户名
	UserPwd   string //用户登录密码
	UserPhone string //用户手机号
	UserEmail string //用户电子邮件

}

func GetTokenRequest(name string) (*RedisToken, error) {
	hash := &redis.Hash{name}
	values, err := hash.HgetAll()
	if err != nil {
		logs.Logger.Error(fmt.Sprintf("GetUserStruct to redis err: %v ", err))
		return nil, err
	}

	//ScanStruct 只能反射一层struct， 不能在struct嵌套其他struct. 例如 TokenRequest{User} 是不行的
	var redisToken RedisToken
	if err := redis.ScanStruct(values, &redisToken); err != nil {
		logs.Logger.Error(fmt.Sprintf("ScanStruct to redis err: %v ", err))
		return nil, err
	}

	return &redisToken, nil
}
